package com.hsmw.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.hsmw.common.base.BaseModel;
import com.hsmw.domain.vo.DriverDetailVO;
import com.hsmw.domain.vo.PMGoingOrderVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 订单表
 * </p>
 *
 * @author WD
 * @since 2021-02-02
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "HsmwOrder对象", description = "订单表")
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class HsmwOrder extends BaseModel {

	private static final long serialVersionUID = 1L;

	private Boolean flag;

	@ApiModelProperty(value = "订单编号")
	private String orderSn;

	@ApiModelProperty(value = "施工单位ID")
	private String constructionUnitId;

	@ApiModelProperty(value = "施工单位名称")
	private String constructionUnitName;

	@ApiModelProperty(value = "联系人")
	private String constructionUnitLinkMan;

	@ApiModelProperty(value = "联系方式")
	private String constructionUnitTel;


	@ApiModelProperty(value = "项目ID")
	private String itemId;

	@ApiModelProperty(value = "项目名称")
	private String itemName;

	@ApiModelProperty(value = "项目施工位置")
	private String itemPosition;

	@ApiModelProperty(value = " 项目施工位置 经度")
	private String lng;

	@ApiModelProperty(value = "项目施工位置 纬度")
	private String lat;

	@ApiModelProperty(value = "施工部位")
	private String constructionPosition;

	@ApiModelProperty(value = "混凝土编号")
	private String concreteNumber;

	@ApiModelProperty(value = "塌落度")
	private String slump;

	@ApiModelProperty(value = "预计方量")
	private String expectVolume;

	@ApiModelProperty(value = "订单状态：待发布、发布中、已接单、进行中、已完成、已结束、已取消")
	private String orderStatus;

	@ApiModelProperty(value = "备注")
	private String remark;

	@ApiModelProperty(value = "支泵位置图片")
	private String branchPumpPic;

	@ApiModelProperty(value = "联系人姓名")
	private String createName;

	@ApiModelProperty(value = "联系人手机号")
	private String createUserTel;

	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
	@ApiModelProperty(value = "到达时间")
	private LocalDateTime reachTime;

	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
	@ApiModelProperty(value = "混凝土到达时间")
	private LocalDateTime concreteReachTime;


	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty(value = "实时方量更新时间")
	private LocalDateTime realVolumeTime;

	@ApiModelProperty(value = "搅拌站确认方量")
	private String foremanVolume;

	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty(value = "订单结束时间")
	private LocalDateTime endTime;

	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty(value = "订单发布时间")
	private LocalDateTime publishTime;

	@TableField(exist = false)
	private String statisticsTime;


	@ApiModelProperty(value = "派单类型")
	private String distributeType;


	@ApiModelProperty(value = "所需车数量")
	private String reqCount;

	@ApiModelProperty(value = "实时累计方量")
	private String realTimeVolume;

	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty(value = "开始干活时间")
	private LocalDateTime startWorkTime;

	@ApiModelProperty(value = "搅拌站")
	private String concreteBatchingPlant;

	@ApiModelProperty(value = "问题内容")
	private String problemInfo;

	@ApiModelProperty(value = "问题语音")
	private String problemAudioUrl;

	@ApiModelProperty(value = "问题语音备注ID")
	private String problemAudioId;


	@ApiModelProperty(value = "项目位置详情")
	private String  itemPositionDetail;


	@ApiModelProperty(value = "语音长度")
	private Integer  problemAudioSeconds;

	@ApiModelProperty(value = "语音备注")
	private String  audioRemark;


	@ApiModelProperty(value = "语音备注Id")
	private String  audioRemarkId;

	@ApiModelProperty(value = "订单识别码")
	private String  identityNum;

	@ApiModelProperty(value = "版本号")
	private Integer version;

	@ApiModelProperty(value = "搅拌站确认方量")
	private String ensureVolume;

	@ApiModelProperty("臂节数")
	private String armSegment;

	@ApiModelProperty(value = "车轴数量")
	private String axis;

	@ApiModelProperty(value = "车辆年限")
	private String years;

	@ApiModelProperty(value = "联系人ID")
	private String linkmanId;

	@ApiModelProperty(value = "联系人名称")
	private String linkmanName;


	@ApiModelProperty(value = "0 工长 1 项目负责人 2. 联系人")
	private String linkmanType;


	@ApiModelProperty(value = "联系人电话 ")
	private String linkmanTelephone;


	@ApiModelProperty("司机名称")
	@TableField(exist = false)
	private List driverList;

	@ApiModelProperty
	@TableField(exist = false)
	private String queryReachTime;

	@ApiModelProperty
	@TableField(exist = false)
	private String queryEndTime;

	@ApiModelProperty("发布时间")
	@TableField(exist = false)
	private String remainingReleaseTime;

	@ApiModelProperty("超时时间")
	@TableField(exist = false)
	private String timeOutInfo;

	@ApiModelProperty("超时时间")
	@TableField(exist = false)
	private int receivedNumber;

	@ApiModelProperty("工长电话")
	@TableField(exist = false)
	private String userPhone;

	@ApiModelProperty("支泵位置")
	@TableField(exist = false)
	private List<HsmwPicture> hsmwPictures;

	@ApiModelProperty("司机总方量")
	@TableField(exist = false)
	private Double sumDriVolume;

	@ApiModelProperty("其他备注")
	private String otherRemark;


	@ApiModelProperty("车ID")
	private String vehicleId;

	@ApiModelProperty(value = "审核前的状态")
	private String orderStatusBefore;

	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty(value = "打卡时间")
	private LocalDateTime clockInTime;

	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty(value = "出发时间")
	private LocalDateTime setoutTime;


	@ApiModelProperty("底盘公里数")
	private String chassisKilometers;

	@ApiModelProperty("挪泵次数")
	private String movePumpCount;

	@ApiModelProperty("耗油量")
	private String fuelConsumption;

	@ApiModelProperty(value = "司机方量")
	private String driverVolume;


	@ApiModelProperty(value = "搅拌站ID")
	private String concretePlantId;


	@ApiModelProperty(value = "搅拌站名称")
	private String concretePlantName;


	@ApiModelProperty(value = "选中的车辆数量")
	@TableField(exist = false)
	private Integer selectedCount;

	@ApiModelProperty(value = "订单数量")
	@TableField(exist = false)
	private Integer orderCount;

	@ApiModelProperty(value = "预计方量总计")
	@TableField(exist = false)
	private Integer expectVolumeSum;

	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty(value = "接单时间")
	private LocalDateTime acceptOrderTime;

	@ApiModelProperty(value = "是否为强制派单 默认0 否，1 是")
	private String forces;

	@ApiModelProperty(value = "发灰状态 0. 未开始 ; 1.进行中 2.暂停 3. 结束")
	private String shipmentStatus;

	@ApiModelProperty(value = "是否需要泵送 0. 否 ; 1.是")
	private String ifTruckRequired;

	@ApiModelProperty(value = "是否需要混凝土 0. 否 ; 1.是")
	private String ifConcreteRequired;

	@ApiModelProperty(value = "是否已经 确认方量 0. 未确认 1. 已确认")
	private String ensureVolumeFlag;

	@ApiModelProperty(value = "是否已经发送短信 0. 否 ; 1.是")
	private String noticeFlag;

	@ApiModelProperty(value = "是否混天凝叫车")
	private String ifSelfChoose;

	@ApiModelProperty(value = "订单负责工长ID")
	private String foremanUserId;

	@ApiModelProperty(value = "订单是否开通平台叫泵的标志")
	private boolean openFlag;

	@ApiModelProperty(value = "搅拌站项目距离")
	private Double concretePlantDistance;

	@ApiModelProperty(value = "操作类型 0 下单人取消 1 是搅拌站取消")
	private String cancelType;

	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
	@ApiModelProperty(value = "确认方量时间")
	private LocalDateTime ensureTime;

	@ApiModelProperty(value = "司机详情列表")
	@TableField(exist = false)
	private  List<DriverDetailVO> driverDetailVOS;

	@ApiModelProperty(value = "司机详情列表")
	@TableField(exist = false)
	private  String imeiNum;

	@ApiModelProperty(value = " 车牌号 ")
	@TableField(exist = false)
	private String vehiclePlate;

	@ApiModelProperty(value = "手机定位信息")
	@TableField(exist = false)
	private String mobileLocate;


	@ApiModelProperty(value = "车辆位置信息")
	@TableField(exist = false)
	private String vehicleLocation;

	@ApiModelProperty(value = "车辆位置信息")
	@TableField(exist = false)
	private PMGoingOrderVO goingOrderVO;

}
